package tech.waterism.model.dto;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.List;

/**
 * SMS_3模型参数
 * 
 * <p>新安江三水源蓄满产流模型参数</p>
 * 
 * @author 高宇
 * @since 2025-11-13
 */
public class SMS3ModelParameters {
    
    /** 上层蒸散发比例 */
    @JsonProperty("WUMx")
    private Double WUMx;
    
    /** 张力水蓄水容量曲线的方次 */
    @JsonProperty("B")
    private Double B;
    
    /** 深层蒸散发系数 */
    @JsonProperty("C")
    private Double C;
    
    /** 不透水面积比例 */
    @JsonProperty("IM")
    private Double IM;
    
    /** 下层蒸散发比例 */
    @JsonProperty("WLMx")
    private Double WLMx;
    
    /** 流域蒸散发折算系数 */
    @JsonProperty("K")
    private Double K;
    
    /** 自由水蓄水容量曲线的方次 */
    @JsonProperty("EX")
    private Double EX;
    
    /** 流域平均张力水容量 (mm) */
    @JsonProperty("WM")
    private Double WM;
    
    /** 流域平均自由水蓄水容量 (mm) */
    @JsonProperty("SM")
    private Double SM;
    
    /** 自由水蓄水库对地下径流的出流系数 */
    @JsonProperty("KG")
    private Double KG;
    
    /** 自由水蓄水库对壤中流的出流系数 */
    @JsonProperty("KI")
    private Double KI;
    
    /** 时段长 (h) */
    @JsonProperty("clen")
    private Integer clen;
    
    /** 月潜在蒸散发 (12个月) */
    @JsonProperty("monthlyPET")
    private List<MonthlyPET> monthlyPET;

    public SMS3ModelParameters() {
    }

    public Double getWUMx() {
        return WUMx;
    }

    public void setWUMx(Double WUMx) {
        this.WUMx = WUMx;
    }

    public Double getB() {
        return B;
    }

    public void setB(Double b) {
        B = b;
    }

    public Double getC() {
        return C;
    }

    public void setC(Double c) {
        C = c;
    }

    public Double getIM() {
        return IM;
    }

    public void setIM(Double IM) {
        this.IM = IM;
    }

    public Double getWLMx() {
        return WLMx;
    }

    public void setWLMx(Double WLMx) {
        this.WLMx = WLMx;
    }

    public Double getK() {
        return K;
    }

    public void setK(Double k) {
        K = k;
    }

    public Double getEX() {
        return EX;
    }

    public void setEX(Double EX) {
        this.EX = EX;
    }

    public Double getWM() {
        return WM;
    }

    public void setWM(Double WM) {
        this.WM = WM;
    }

    public Double getSM() {
        return SM;
    }

    public void setSM(Double SM) {
        this.SM = SM;
    }

    public Double getKG() {
        return KG;
    }

    public void setKG(Double KG) {
        this.KG = KG;
    }

    public Double getKI() {
        return KI;
    }

    public void setKI(Double KI) {
        this.KI = KI;
    }

    public Integer getClen() {
        return clen;
    }

    public void setClen(Integer clen) {
        this.clen = clen;
    }

    public List<MonthlyPET> getMonthlyPET() {
        return monthlyPET;
    }

    public void setMonthlyPET(List<MonthlyPET> monthlyPET) {
        this.monthlyPET = monthlyPET;
    }

    @Override
    public String toString() {
        return "SMS3ModelParameters{" +
                "WUMx=" + WUMx +
                ", B=" + B +
                ", C=" + C +
                ", IM=" + IM +
                ", WLMx=" + WLMx +
                ", K=" + K +
                ", EX=" + EX +
                ", WM=" + WM +
                ", SM=" + SM +
                ", KG=" + KG +
                ", KI=" + KI +
                ", clen=" + clen +
                ", monthlyPET=" + (monthlyPET != null ? monthlyPET.size() + " months" : "null") +
                '}';
    }
}
